home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / reno20 / reno20.bas next >
BASIC Source File  |  1994-06-01  |  7KB  |  200 lines

  1. 100 ' RE-NUMBER プログラム V2.0
  2. 110 '
  3. 120 ' Produced By K.Fujita
  4. 130 '
  5. 140 '     1994.2.12
  6. 150 '
  7. 160 DIM NA1$(255),NA2$(255),NAT(255)
  8. 170 CLS:DR$="":ON ERROR GOTO 190
  9. 180 INPUT"対象ドライブは? ",DR$:DR$=DR$+":":SHELL DR$:GOTO 200
  10. 190 RESUME 170
  11. 200 ON ERROR GOTO 0
  12. 210 CLS:FILES:PRINT 
  13. 220 LINE(395,95)-(639,250),PSET,5,B
  14. 230 LINE(400,100)-(634,245),PSET,5,B
  15. 240 SYMBOL(405,110),"変更処理に入る",1,1,7
  16. 250 SYMBOL(405,130),"一つ前のディレクトリに戻る",1,1,7
  17. 260 SYMBOL(405,150),"ディレクトリの指定",1,1,7
  18. 270 SYMBOL(405,170),"ドライブ変更",1,1,7
  19. 280 GOTO 300
  20. 290 LINE(403,CAS%)-(630,CAS%+19),XOR,3,B:RETURN
  21. 300 CAS%=108:CO%=1:SYMBOL(405,220)," ↑↓キーで指定",1,1,6
  22. 310 GOSUB 290
  23. 320 A$=INKEY$:IF A$="" THEN 320 ELSE GOSUB 290
  24. 330 IF A$=CHR$(&H0D) THEN 370
  25. 340 IF A$=CHR$(&H1E) AND CO%>1 THEN CO%=CO%-1:CAS%=CAS%-20:GOTO 310
  26. 350 IF A$=CHR$(&H1F) AND CO%<4 THEN CO%=CO%+1:CAS%=CAS%+20:GOTO 310
  27. 360 GOTO 310
  28. 370 CLS 5:ON CO% GOTO 420,400,410,170
  29. 380 RESUME 220
  30. 390 RESUME 200
  31. 400 ON ERROR GOTO 380:SHELL "cd ..":GOTO 210
  32. 410 ON ERROR GOTO 390:INPUT"ディレクトリ名? ",DRNA$:SHELL "cd "+DRNA$:GOTO 210
  33. 420 '
  34. 430 CMP%=0:JI1$="":ON ERROR GOTO 450
  35. 440 NEXT:GOTO 440
  36. 450 RESUME 460
  37. 460 INPUT"変更前の拡張子? ",A$:GOSUB 2000:KAKU1$=A$
  38. 470 IF KAKU1$="" THEN 500
  39. 480 T=INSTR(KAKU1$,".")
  40. 490 KAKU1$=MID$(KAKU1$,T+1,3)
  41. 500 ON ERROR GOTO 0
  42. 510 INPUT"変更前の固定部分の文字列? ",A$:GOSUB 2000:MNA1$=A$:IF LEN(MNA1$)>7 THEN 510
  43. 520 ON ERROR GOTO 540
  44. 530 FILES MNA1$+"*."+KAKU1$:PRINT :GOTO 550
  45. 540 RESUME 430
  46. 550 INPUT"変更前の可変部分の文字列の長さ? ",L1%
  47. 560 L%=LEN(MNA1$):IF L%+L1%>8 THEN COLOR 3:PRINT "ファイル名が長すぎます!":COLOR 7:GOTO 510
  48. 570 '
  49. 580 INPUT"最大値は何番から? ",MAX
  50. 590 INPUT"最小値は何番まで? ",MIN
  51. 600 IF MIN>MAX THEN COLOR 3:PRINT "最大値と最小値の指定に誤りがあります!":COLOR 7:GOTO 580
  52. 610 INPUT"変更前の番号例? ",X1
  53. 620 INPUT"変更後の番号例? ",X2
  54. 630 X=X2-X1
  55. 640 '
  56. 650 INPUT"変更前の字詰めの文字? ",A$:GOSUB 2000:JIZU1$=A$:IF LEN(JIZU1$)>1 THEN 650
  57. 660 '
  58. 670 '
  59. 680 CLS:GOSUB 1650:IF NAT%=0 THEN 200
  60. 690 INPUT"上記のファイルを変更してよろしいですか?(YesならYキー)",A$
  61. 700 IF A$<>"" AND KINSTR("yYyYンンん",A$) THEN 710 ELSE 200
  62. 710 IF ERF%=0 THEN 740
  63. 720 INPUT"変更後のファイルナンバーを圧縮しますか?(YesならYキー)",A$
  64. 730 IF A$<>"" AND KINSTR("yYyYンンん",A$) THEN CMP%=1 ELSE CMP%=0
  65. 740 CLS:T=MAX:GOSUB 1230
  66. 750 COLOR 6:PRINT MNA1$;
  67. 760 COLOR 4:PRINT JI1$;
  68. 770 PRINT D1$;
  69. 780 COLOR 5:PRINT ".";KAKU1$;
  70. 790 COLOR 7:PRINT " ~ ";
  71. 800 T=MIN:GOSUB 1230
  72. 810 COLOR 6:PRINT MNA1$;
  73. 820 COLOR 4:PRINT JI1$;
  74. 830 PRINT D1$;
  75. 840 COLOR 5:PRINT ".";KAKU1$;:COLOR 7:PRINT "     (";
  76. 850 IF X=0 THEN PRINT "数字は再設定されません。)":GOTO 880
  77. 860 IF X>0 THEN PRINT "+"; ELSE PRINT "-";
  78. 870 PRINT MID$(STR$(X),2);" づつ ずれます。)"
  79. 880 PRINT:COLOR 3
  80. 890 PRINT "***************** 変 更 前 の 設 定 ******************":COLOR 7
  81. 900 PRINT"    固定部分 : ";:COLOR 6:PRINT MNA1$;:COLOR 7:LOCATE 25
  82. 910 PRINT"可変部分の長さ : ";:COLOR 4:PRINT L1%:COLOR 7
  83. 920 PRINT"字詰めの文字 : ";:COLOR 4:PRINT JIZU1$;:COLOR 7:LOCATE 25
  84. 930 PRINT"    拡張子 : ";:COLOR 5:PRINT KAKU1$:COLOR 7
  85. 940 PRINT "******************************************************"
  86. 950 PRINT:JI2$=""
  87. 960 INPUT"変更後の固定部分の文字列? ",A$:GOSUB 2000:MNA2$=A$:IF LEN(MNA2$)>7 THEN 960
  88. 970 INPUT"変更後の可変部分の文字列の長さ? ",L2%
  89. 980 L%=LEN(MNA2$):IF L%+L2%>8 THEN COLOR 3:PRINT "ファイル名が長すぎます!":COLOR 7:GOTO 960
  90. 990 INPUT"変更後の字詰めの文字? ",A$:GOSUB 2000:JIZU2$=A$:IF LEN(JIZU2$)>1 THEN 990
  91. 1000 INPUT"変更後の拡張子? ",A$:GOSUB 2000:KAKU2$=A$
  92. 1010 IF KAKU2$="" THEN 1040
  93. 1020 T=INSTR(KAKU2$,".")
  94. 1030 KAKU2$=MID$(KAKU2$,T+1,3)
  95. 1040 PRINT:GOSUB 1360:IF ERF%=1 THEN PRINT "何か押して下さい":A$=INPUT$(1):GOTO 740 
  96. 1050 PRINT 
  97. 1060 INPUT"この設定でいいですか?(再設定の場合 Nキー)",A$
  98. 1070 IF A$<>"" AND KINSTR("nNnNミミみ",A$) THEN PRINT:GOTO 1740
  99. 1080 '
  100. 1090 IF X<=0 THEN 1160
  101. 1100 NAC%=0
  102. 1110 FOR T=NAT%-1 TO 0 STEP -1
  103. 1120 NA1$=NA1$(T):NA2$=NA2$(T):PRINT NA1$,NA2$:IF NA1$=NA2$ THEN 1140
  104. 1130 ON ERROR GOTO 1820:NAME NA1$ AS NA2$:NAC%=T
  105. 1140 NEXT 
  106. 1150 ON ERROR GOTO 0:GOTO 1770
  107. 1160 NAC%=0
  108. 1170 FOR T=0 TO NAT%-1
  109. 1180 NA1$=NA1$(T):NA2$=NA2$(T):PRINT NA1$,NA2$:IF NA1$=NA2$ THEN 1200
  110. 1190 ON ERROR GOTO 1820:NAME NA1$ AS NA2$:NAC%=T
  111. 1200 NEXT
  112. 1210 ON ERROR GOTO 0:GOTO 1770
  113. 1220 '
  114. 1230 D1$=MID$(STR$(T),2)
  115. 1240 IF JIZU1$="" THEN 1260
  116. 1250 IF L1%>1 THEN JI1$=STRING$(L1%-LEN(D1$),JIZU1$)
  117. 1260 NA1$=MNA1$+JI1$+D1$+"."+KAKU1$
  118. 1270 GOTO 1550
  119. 1280 '
  120. 1290 D2$=MID$(STR$(T+X),2):IF JIZU2$="" THEN 1320
  121. 1300 IF L2%-LEN(D2$)<0 THEN COLOR 2:PRINT "可変部分が異常です!":COLOR 7:ERF%=1
  122. 1310 IF L2%>1 THEN JI2$=STRING$(L2%-LEN(D2$),JIZU2$)
  123. 1320 NA2$=MNA2$+JI2$+D2$
  124. 1330 IF LEN(NA2$)>8 OR T+X<0 THEN COLOR 2:PRINT "「";NA2$;"」 が異常です!":COLOR 7:ERF%=1
  125. 1340 NA2$=NA2$+"."+KAKU2$
  126. 1350 RETURN
  127. 1360 '
  128. 1370 ERF%=0:CT%=0:IF X<=0 THEN 1440
  129. 1380 T=NAT(NAT%-1)
  130. 1390 FOR TT=NAT%-1 TO 0 STEP -1
  131. 1400 IF CMP%=1 THEN GOSUB 1290:NA2$(TT)=NA2$:T=T-1 ELSE T=NAT(TT):GOSUB 1290:NA2$(TT)=NA2$
  132. 1410 IF TT>=NAT%-4 OR TT<=3 OR CMP%=1 THEN PRINT NA1$(TT),NA2$(TT) ELSE GOSUB 1510
  133. 1420 NEXT
  134. 1430 RETURN
  135. 1440 T=NAT(0)
  136. 1450 FOR TT=0 TO NAT%-1
  137. 1460 IF CMP%=1 THEN GOSUB 1290:NA2$(TT)=NA2$:T=T+1 ELSE T=NAT(TT):GOSUB 1290:NA2$(TT)=NA2$
  138. 1470 IF TT>=NAT%-4 OR TT<=3 OR CMP%=1 THEN PRINT NA1$(TT),NA2$(TT) ELSE GOSUB 1510
  139. 1480 NEXT
  140. 1490 RETURN
  141. 1500 '
  142. 1510 IF CT%=4 THEN RETURN
  143. 1520 CT%=CT%+1
  144. 1530 PRINT "・","・"
  145. 1540 RETURN
  146. 1550 '
  147. 1560 ON ERROR GOTO 1600
  148. 1570 OPEN "I",#1,DR$+NA1$
  149. 1580 CLOSE:ON ERROR GOTO 0
  150. 1590 RETURN
  151. 1600 IF ERR=63 THEN COLOR 6:PRINT "「";NA1$;"」が有りません!":GOTO 1620
  152. 1610 COLOR 2:PRINT "「";NA1$;"」 が異常です!"
  153. 1620 COLOR 7:ERF%=1
  154. 1630 RESUME 1640
  155. 1640 RETURN 1710
  156. 1650 '
  157. 1660 NAT%=0:FMIN%=0:FMAX%=0:ERF%=0
  158. 1670 FOR T=MIN TO MAX
  159. 1680 GOSUB 1230:PRINT NA1$:NA1$(NAT%)=NA1$:NAT(NAT%)=T:NAT%=NAT%+1
  160. 1690 IF FMIN%=0 THEN MIN=T:FMIN%=1
  161. 1700 FMAX%=T
  162. 1710 NEXT
  163. 1720 MAX=FMAX%
  164. 1730 RETURN
  165. 1740 ON ERROR GOTO 0
  166. 1750 INPUT"変更前のファイルから設定し直しますか? (YesならYキー)",A$
  167. 1760 IF A$<>"" AND KINSTR("yYyYンンん",A$) THEN 200 ELSE 680
  168. 1770 COLOR 6:INPUT"1:終了 2:別のファイル名 3:別のディレクトリ 4:別のドライブ ",CO%:COLOR 7
  169. 1780 ON CO% GOTO 1800,1790,200,170:GOTO 1770
  170. 1790 CLS:FILES:PRINT :GOTO 420
  171. 1800 END
  172. 1810 '
  173. 1820 ' name error
  174. 1830 COLOR 3
  175. 1840 PRINT 
  176. 1850 PRINT "変更作業中にエラーが出ました!"
  177. 1860 IF NAC%=0 THEN 1960
  178. 1870 COLOR 6
  179. 1880 INPUT"1:変更したファイル名を戻す 2:そのままの状態で再度設定する ",A$:COLOR 7
  180. 1890 IF A$="1" THEN 1920
  181. 1900 IF A$="2" THEN 1980
  182. 1910 GOTO 1870
  183. 1920 IF X<=0 THEN 1940
  184. 1930 FOR T=NAC% TO NAT%-1:GOSUB 1950:NEXT:GOTO 1960
  185. 1940 FOR T=NAC% TO 0 STEP -1:GOSUB 1950:NEXT:GOTO 1960
  186. 1950 PRINT NA2$(T),NA1$(T):NAME DR$+NA2$(T) AS DR$+NA1$(T):RETURN
  187. 1960 COLOR 6:PRINT "何かキーを押して下さい":COLOR 7
  188. 1970 A$=INKEY$:IF A$="" THEN 1970
  189. 1980 IF ERL=1130 THEN T=0:RESUME 1140 ELSE T=NAT%-1:RESUME 1200 
  190. 1990 '
  191. 2000 '小文字→大文字
  192. 2010 IF A$="" THEN RETURN
  193. 2020 L=LEN(A$):DD$=""
  194. 2030 FOR T=1 TO L
  195. 2040 D$=MID$(A$,T,1)
  196. 2050 IF D$>="a" AND D$<="z" THEN D$=CHR$(ASC(D$)-&H20)
  197. 2060 DD$=DD$+D$
  198. 2070 NEXT
  199. 2080 A$=DD$:RETURN
  200.